package main

import (
	_ "beegoProject10/models/auth"
	_ "beegoProject10/routers"
	"beegoProject10/utils"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/logs"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"log"
)

/*
9.55【权限管理模块】角色列表分页功能完成，用户权限显示不同菜单，角色功能实现
	1. controller - auth - role_controller - List
	2. 拷贝user-add和user-list改名 => views/auth/role-list和role-add
	3. 路由
	4. 页面添加角色 权限列表 - 添加 - 权限管理/角色列表/RoleController.List/96
	5. role-list.html 33H 35H 45H
	6. 定义List函数逻辑
    7. role-list.html 33H，35H，45H，61h-修改名称和连接104H，
    8. 定义List分页逻辑
    9. user-list.html 分页逻辑拷贝131H-151H 到 role-list.html替换111H-129H
    10. 数据库初始化数据

9.56【权限管理模块】角色添加功能完成
	1. controller - auth - role_controller - ToAdd
	2. 路由
	3. role-add.html 34-60H,77-89
	4. role-list.html 52H
	5. 新建DoAdd方法,并创建路由，定义DoAdd逻辑
	6. role-list.html 65H 87-98H
    7. 更新数据库表

9.57【权限管理模块】多对多模型设计及表迁移
	1. 多对多关系
		将 models - user - user.go 拷贝到 models - auth - auth.go  18H，28H，29H，44H
        删除 user 文件 并修改引入多个controller内的引入文件
		go run main.go orm syncdb -v

9.58【权限管理模块】角色上配置用户
	1. role_controller.go ToRoleUser
	2. 拷贝role-user-add.html role-auth-add.html 到 auth下
	3. 路由
	4. role-list.html 93H，
	5. 定义 role_controller.go ToRoleUser 逻辑
	6. role-user-add.html 修改引入<!-- 增加 sweetalert -->，34H，42H,55-57H,
    8. role_controller.go DoRoleUser 添加到后端逻辑
    9. 路由

9.59【权限管理模块】角色上配置用户二
	1. role-user-add.html 65H{先注释}, 通过js获取84-120H
	2. 编写 DoRoleUser 后续逻辑
	3. 编写int转换 utils -> str_conv_int.go
	4. role-user-add.html 增加返回 114-132H

*/

func init() {
	user := beego.AppConfig.DefaultString("mysql::Username", "root")
	pwd := beego.AppConfig.DefaultString("mysql::Password", "Ideal123")
	host := beego.AppConfig.DefaultString("mysql::Host", "127.0.0.1")
	port := beego.AppConfig.DefaultInt("mysql::Port", 3306)
	dbName := beego.AppConfig.DefaultString("mysql::DbName", "beegoProject")

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=PRC",
		user, pwd, host, port, dbName)

	orm.RegisterDriver("mysql", orm.DRMySQL)
	orm.RegisterDataBase("default", "mysql", dsn)

	db, err := orm.GetDB("default")
	if err != nil {
		log.Fatal(err)
	} else if err := db.Ping(); err != nil {
		log.Fatal(err)
	}
}

func main() {
	orm.RunCommand()
	/*	orm.Debug = true*/
	beego.BConfig.WebConfig.Session.SessionOn = true

	// 未登录请求拦截
	beego.InsertFilter("/main/*", beego.BeforeRouter, utils.LoginFilter)

	// 日志
	logs.SetLogger(logs.AdapterMultiFile, `{"filename":"logs/beego.log","separate":["error","info","debug"]}`)

	beego.Run()
}
